<html>
    <head>
        <title>验证相关基础设施</title>
    </head>
    <body>
        <script>
            /*
                        二、验证相关的基础设施

                                1、IValidationEnable接口
                                        IValidationEnabled是一个空标记接口，可以由任何类实现（注册到DI并从其解析），以让ABP为类的方法执行验证系统。
                                        eg：
                                            using System.Threading.Tasks;
                                            using Volo.Abp.DependencyInjection;
                                            using Volo.Abp.Validation;

                                            namespace Acme.BookStore
                                            {
                                                public class MyService : ITransientDependency, IValidationEnabled
                                                {
                                                    public virtual async Task DoItAsync(MyInput input)
                                                    {
                                                        //...
                                                    }
                                                }
                                            }

                                        ABP使用动态代理/拦截系统来执行验证。为了使其工作，你的方法应该是虚拟或者你的服务应该通过接口注入和使用（如IMyService）

                                2、启用/禁用验证
                                        可以使用[DisableValidation]对方法、类和属性禁用它

                                        eg：

                                            [DisableValidation]
                                            public Void MyMethod()
                                            {
                                            }

                                            [DisableValidation]
                                            public class InputClass
                                            {
                                                public string MyProperty { get; set; }
                                            }

                                            public class InputClass
                                            {
                                                [DisableValidation]
                                                public string MyProperty { get; set; }
                                            }
                                      
                                3、AbpValidationException　验证异常类：

                                            一旦ABP确定了一个验证错误，它会抛出一个类型为AbpValidationException的异常。
                                            你的应用程序代码可以抛出AbpValidationException，但大多数时候不需要。

                                            AbpValidationException的属性包含验证错误列表。

                                            AbpValidationException的日志级别设置为Warning。它将所有验证错误记录到日志系统。

                                            AbpValidationException被ABP自动捕获并转换为可用错误并带有HTTP 400状态代码。有关详细信息，请参阅异常处理文档。
                    */

        </script>
    </body>
</html>